﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using acessaDB;
using Frame;
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
using Estrutura;


namespace Banco
{

    /// <summary>
    /// Summary description for BD_Evento
    /// </summary>
    public class BD_Evento
    {
        #region variaveis_globais

        acessaDB.conectaDBMSSQLServer sqlServer = new conectaDBMSSQLServer();
        string conectionString = System.Configuration.ConfigurationManager.AppSettings["SQLServerConnectionLocal"];
        string usuario = string.Empty;

        #endregion

        #region construtor

        public BD_Evento()
        {
            if (System.Configuration.ConfigurationManager.AppSettings["ambiente"] == "PROD")
                conectionString = System.Configuration.ConfigurationManager.AppSettings["SQLServerConnectionProd"];
        }
        public BD_Evento(string usu_Login)
        {
            if (System.Configuration.ConfigurationManager.AppSettings["ambiente"] == "PROD")
                conectionString = System.Configuration.ConfigurationManager.AppSettings["SQLServerConnectionProd"];
            usuario = usu_Login;
        }

        #endregion

        #region metodos

        public System.Data.DataSet _retorna_Evento(
                                                string EVENTO_ID,
                                                string EVENTO_MODALIDADE_ID,
                                                string EVT_DESCRICAO,
                                                string EVT_DTREALIZACAO,
                                                string EVT_DTINSCRICAOINI,
                                                string EVT_DTINSCRICAOFIM,
                                                string EVT_STEXCLUIDO,
                                                string EVT_VALOR,
                                                string SOLICITANTE_ID
                                                )
        {

            if (string.IsNullOrEmpty(EVENTO_ID)) EVENTO_ID = "''";
            if (string.IsNullOrEmpty(EVENTO_MODALIDADE_ID)) EVENTO_MODALIDADE_ID = "''";
            if (string.IsNullOrEmpty(EVT_DESCRICAO)) EVT_DESCRICAO = "''";
            if (string.IsNullOrEmpty(EVT_DTREALIZACAO)) EVT_DTREALIZACAO = "''";
            if (string.IsNullOrEmpty(EVT_DTINSCRICAOINI)) EVT_DTINSCRICAOINI = "''";
            if (string.IsNullOrEmpty(EVT_DTINSCRICAOFIM)) EVT_DTINSCRICAOFIM = "''";
            if (string.IsNullOrEmpty(EVT_STEXCLUIDO)) EVT_STEXCLUIDO = "''";
            if (string.IsNullOrEmpty(EVT_VALOR)) EVT_VALOR = "''";
            if (string.IsNullOrEmpty(SOLICITANTE_ID)) SOLICITANTE_ID = "''";

            string sql = "SELECT " +
                                  "EVENTO.EVENTO_ID, " +
                                  "EVENTO.EVENTO_MODALIDADE_ID, " +
                                  "EVENTO.EVT_DESCRICAO, " +
                                  "EVENTO.EVT_DTREALIZACAO, " +
                                  "EVENTO.EVT_DTINSCRICAOINI, " +
                                  "EVENTO.EVT_DTINSCRICAOFIM, " +
                                  "EVENTO.EVT_STEXCLUIDO, " +
                                  "EVENTO.EVT_VALOR, " +
                                  "EVENTO.SOLICITANTE_ID " +
                            "FROM EVENTO " +
                            "LEFT JOIN EVENTO_MODALIDADE ON EVENTO_MODALIDADE.EVENTO_MODALIDADE_ID = EVENTO.EVENTO_MODALIDADE_ID " +
                            "LEFT JOIN SOLICITANTE ON SOLICITANTE.SOLICITANTE_ID = EVENTO.SOLICITANTE_ID " +
                            "WHERE " +
                            "      (EVENTO.EVENTO_ID = " + EVENTO_ID + "  OR " + EVENTO_ID + " = '') AND " +
                            "      (EVENTO.EVENTO_MODALIDADE_ID = " + EVENTO_MODALIDADE_ID + "  OR " + EVENTO_MODALIDADE_ID + " = '') AND " +
                            "      (EVENTO.EVT_DESCRICAO = " + EVT_DESCRICAO + "  OR " + EVT_DESCRICAO + " = '') AND " +
                            "      (EVENTO.EVT_DTREALIZACAO = " + EVT_DTREALIZACAO + "  OR " + EVT_DTREALIZACAO + " = '') AND " +
                            "      (EVENTO.EVT_DTINSCRICAOINI = " + EVT_DTINSCRICAOINI + "  OR " + EVT_DTINSCRICAOINI + " = '') AND " +
                            "      (EVENTO.EVT_DTINSCRICAOFIM = " + EVT_DTINSCRICAOFIM + "  OR " + EVT_DTINSCRICAOFIM + " = '') AND " +
                            "      (EVENTO.EVT_STEXCLUIDO = " + EVT_STEXCLUIDO + "  OR " + EVT_STEXCLUIDO + " = '') AND " +
                            "      (EVENTO.EVT_VALOR = " + EVT_VALOR + "  OR " + EVT_VALOR + " = '') AND " +
                            "      (EVENTO.SOLICITANTE_ID = " + SOLICITANTE_ID + "  OR " + SOLICITANTE_ID + " = '') ";

            return sqlServer.retornaDataSet(sql, conectionString);;
            

        }


        public List<ES_Evento> _obter_Evento(
                                                string EVENTO_ID,
                                                string EVENTO_MODALIDADE_ID,
                                                string EVT_DESCRICAO,
                                                string EVT_DTREALIZACAO,
                                                string EVT_DTINSCRICAOINI,
                                                string EVT_DTINSCRICAOFIM,
                                                string EVT_STEXCLUIDO,
                                                string EVT_VALOR,
                                                string SOLICITANTE_ID,
                                                string ORDER_BY_CLAUSE,
                                                string EVT_VIGENTE = "N"
                                                )
        {

            if (string.IsNullOrEmpty(EVENTO_ID)) EVENTO_ID = "0";
            if (string.IsNullOrEmpty(EVENTO_MODALIDADE_ID)) EVENTO_MODALIDADE_ID = "0";
            if (string.IsNullOrEmpty(EVT_DESCRICAO)) EVT_DESCRICAO = "''"; else EVT_DESCRICAO = Util.retonarAspas(EVT_DESCRICAO + "%");
            if (!string.IsNullOrEmpty(EVT_DTREALIZACAO)) EVT_DTREALIZACAO = Util.retonarAspas(Util.formataData(EVT_DTREALIZACAO,"dd/MM/yyyy"));
            if (!string.IsNullOrEmpty(EVT_DTINSCRICAOINI)) EVT_DTINSCRICAOINI = Util.retonarAspas(Util.formataData(EVT_DTINSCRICAOINI, "dd/MM/yyyy"));
            if (!string.IsNullOrEmpty(EVT_DTINSCRICAOFIM)) EVT_DTINSCRICAOFIM = Util.retonarAspas(Util.formataData(EVT_DTINSCRICAOFIM, "dd/MM/yyyy"));
            if (string.IsNullOrEmpty(EVT_STEXCLUIDO)) EVT_STEXCLUIDO = "0";
            if (string.IsNullOrEmpty(EVT_VALOR)) EVT_VALOR = "0"; 
            if (string.IsNullOrEmpty(SOLICITANTE_ID)) SOLICITANTE_ID = "0";
            if (string.IsNullOrEmpty(ORDER_BY_CLAUSE)) ORDER_BY_CLAUSE = "EVENTO.EVT_DESCRICAO ";

            string sql = "SELECT " +
                                  "EVENTO.EVENTO_ID, " +
                                  "EVENTO.EVENTO_MODALIDADE_ID, " +
                                  "EVENTO_MODALIDADE.EVM_DESCRICAO, "+
                                  "EVENTO.EVT_DESCRICAO, " +
                                  "EVENTO.EVT_DTREALIZACAO, " +
                                  "EVENTO.EVT_DTINSCRICAOINI, " +
                                  "EVENTO.EVT_DTINSCRICAOFIM, " +
                                  "EVENTO.EVT_STEXCLUIDO, " +
                                  "EVENTO.EVT_VALOR, " +
                                  "EVENTO.SOLICITANTE_ID, " +
                                  "EVENTO.EVT_VAGASDISP, "+
                                  "(SELECT COUNT(AE.ALUNO_EVENTO_ID) FROM ALUNO_EVENTO AE WHERE AE.EVENTO_ID = EVENTO.EVENTO_ID) EVT_ALUNOSINSC " +
                            "FROM EVENTO " +
                            "LEFT JOIN EVENTO_MODALIDADE ON EVENTO_MODALIDADE.EVENTO_MODALIDADE_ID = EVENTO.EVENTO_MODALIDADE_ID " +
                            "LEFT JOIN SOLICITANTE ON SOLICITANTE.SOLICITANTE_ID = EVENTO.SOLICITANTE_ID " +
                            "WHERE " +
                            "      (EVENTO.EVENTO_ID = " + EVENTO_ID + "  OR " + EVENTO_ID + " = 0) AND " +
                            "      (EVENTO.EVENTO_MODALIDADE_ID = " + EVENTO_MODALIDADE_ID + "  OR " + EVENTO_MODALIDADE_ID + " = 0) AND " +
                            "      (EVENTO.EVT_DESCRICAO LIKE " + EVT_DESCRICAO + "  OR " + EVT_DESCRICAO + " = '') AND ";
            if (!string.IsNullOrEmpty(EVT_DTREALIZACAO))
                sql +=      "      (EVENTO.EVT_DTREALIZACAO = " + EVT_DTREALIZACAO + ") AND ";
            if (!string.IsNullOrEmpty(EVT_DTINSCRICAOINI))
                sql +=      "      (EVENTO.EVT_DTINSCRICAOINI = " + EVT_DTINSCRICAOINI + ") AND ";
            if (!string.IsNullOrEmpty(EVT_DTINSCRICAOFIM))
                sql +=      "      (EVENTO.EVT_DTINSCRICAOFIM = " + EVT_DTINSCRICAOFIM + ") AND ";
            
            sql +=                            
                            "      (EVENTO.EVT_STEXCLUIDO = " + EVT_STEXCLUIDO + "  OR " + EVT_STEXCLUIDO + " = '') AND " +
                            "      (EVENTO.EVT_VALOR = " + EVT_VALOR + "  OR " + EVT_VALOR + " = '') AND " +
                            "      (EVENTO.SOLICITANTE_ID = " + SOLICITANTE_ID + "  OR " + SOLICITANTE_ID + " = '') ";
            if (EVT_VIGENTE == "S")
                sql += "AND (CURRENT_TIMESTAMP BETWEEN EVENTO.EVT_DTINSCRICAOINI AND EVENTO.EVT_DTINSCRICAOFIM OR EVENTO.EVT_DTINSCRICAOINI IS NULL) ";

            sql += " ORDER BY " + ORDER_BY_CLAUSE;

            List<ES_Evento> lista = new List<ES_Evento>();
            SqlConnection sqlConexao = new SqlConnection(conectionString);
            SqlDataReader dr = sqlServer.retornaDataReader(sql, conectionString, sqlConexao);
            try
            {
                while (dr.Read())
                {
                    ES_Evento item = new ES_Evento();
                    item.EVENTO_ID = dr["EVENTO_ID"].ToString();
                    item.EVENTO_MODALIDADE_ID = dr["EVENTO_MODALIDADE_ID"].ToString();
                    item.EVM_DESCRICAO = dr["EVM_DESCRICAO"].ToString();
                    item.EVT_DESCRICAO = dr["EVT_DESCRICAO"].ToString();

                    item.EVT_DTREALIZACAO = dr["EVT_DTREALIZACAO"].ToString().Replace("00:00:00","");
                    item.EVT_DTINSCRICAOINI = dr["EVT_DTINSCRICAOINI"].ToString().Replace("00:00:00", "");
                    item.EVT_DTINSCRICAOFIM = dr["EVT_DTINSCRICAOFIM"].ToString().Replace("00:00:00", "");
                                        
                    item.EVT_STEXCLUIDO = dr["EVT_STEXCLUIDO"].ToString();
                    item.EVT_VALOR = dr["EVT_VALOR"].ToString();
                    item.SOLICITANTE_ID = dr["SOLICITANTE_ID"].ToString();
                    item.EVT_ALUNOSINSC = dr["EVT_ALUNOSINSC"].ToString();
                    item.EVT_VAGASDISP = dr["EVT_VAGASDISP"].ToString();
                    lista.Add(item);

                }
                return lista;
            }
            finally
            {
                sqlServer.fecharConexao(sqlConexao);
            }
        }


        public ES_Evento _obter_Evento_by_id(
                                                string EVENTO_ID
                                                )
        {

            if (string.IsNullOrEmpty(EVENTO_ID)) EVENTO_ID = "'0'";

            string sql = "SELECT " +
                                  "EVENTO.EVENTO_ID, " +
                                  "EVENTO.EVENTO_MODALIDADE_ID, " +
                                  "EVENTO_MODALIDADE.EVM_DESCRICAO, "+
                                  "EVENTO.EVT_DESCRICAO, " +
                                  "EVENTO.EVT_DTREALIZACAO, " +
                                  "EVENTO.EVT_DTINSCRICAOINI, " +
                                  "EVENTO.EVT_DTINSCRICAOFIM, " +
                                  "EVENTO.EVT_STEXCLUIDO, " +
                                  "EVENTO.EVT_VALOR, " +
                                  "EVENTO.SOLICITANTE_ID, " +
                                  "EVENTO.EVT_VAGASDISP, " +
                                  "EVENTO.EVT_OBS "+
                            "FROM EVENTO " +
                            "LEFT JOIN EVENTO_MODALIDADE ON EVENTO_MODALIDADE.EVENTO_MODALIDADE_ID = EVENTO.EVENTO_MODALIDADE_ID " +
                            "LEFT JOIN SOLICITANTE ON SOLICITANTE.SOLICITANTE_ID = EVENTO.SOLICITANTE_ID " +
                            "WHERE " +
                            "      (EVENTO.EVENTO_ID = " + EVENTO_ID + "  OR " + EVENTO_ID + " = '0') ";

            ES_Evento item = new ES_Evento();
            SqlConnection sqlConexao = new SqlConnection(conectionString);
            SqlDataReader dr = sqlServer.retornaDataReader(sql, conectionString, sqlConexao);
            try
            {
                while (dr.Read())
                {
                    item.EVENTO_ID = dr["EVENTO_ID"].ToString();
                    item.EVENTO_MODALIDADE_ID = dr["EVENTO_MODALIDADE_ID"].ToString();
                    item.EVM_DESCRICAO = dr["EVM_DESCRICAO"].ToString();
                    item.EVT_DESCRICAO = dr["EVT_DESCRICAO"].ToString();

                    item.EVT_DTREALIZACAO = dr["EVT_DTREALIZACAO"].ToString().Replace("00:00:00", "");
                    item.EVT_DTINSCRICAOINI = dr["EVT_DTINSCRICAOINI"].ToString().Replace("00:00:00", "");
                    item.EVT_DTINSCRICAOFIM = dr["EVT_DTINSCRICAOFIM"].ToString().Replace("00:00:00", "");

                    item.EVT_STEXCLUIDO = dr["EVT_STEXCLUIDO"].ToString();
                    item.EVT_VALOR = dr["EVT_VALOR"].ToString();
                    item.SOLICITANTE_ID = dr["SOLICITANTE_ID"].ToString();
                    item.EVT_VAGASDISP = dr["EVT_VAGASDISP"].ToString();
                    item.EVT_OBS = dr["EVT_OBS"].ToString();
                }
                return item;
            }
            finally
            {
                sqlServer.fecharConexao(sqlConexao);
            }
        }


        public void _inserir_Evento(
                                                string EVENTO_ID,
                                                string EVENTO_MODALIDADE_ID,
                                                string EVT_DESCRICAO,
                                                string EVT_DTREALIZACAO,
                                                string EVT_DTINSCRICAOINI,
                                                string EVT_DTINSCRICAOFIM,
                                                string EVT_STEXCLUIDO,
                                                string EVT_VALOR,
                                                string SOLICITANTE_ID,
                                                string EVT_VAGASDISP,
                                                string EVT_OBS
                                                )
        {

            string sql = " INSERT INTO EVENTO " +
                         "      ( " +
                         "          EVENTO_MODALIDADE_ID, " +
                         "          EVT_DESCRICAO, " +
                         "          EVT_DTREALIZACAO, " +
                         "          EVT_DTINSCRICAOINI, " +
                         "          EVT_DTINSCRICAOFIM, " +
                         "          EVT_STEXCLUIDO, " +
                         "          EVT_VALOR, " +
                         "          SOLICITANTE_ID,  " +
                         "          EVT_VAGASDISP,  " +
                         "          EVT_OBS "+
                 "      )" +
                 "  VALUES " +
                 "      ( " +
                              Util.retonarNull(EVENTO_MODALIDADE_ID) + ", " +
                              Util.retonarAspas(EVT_DESCRICAO, true) + ", " +
                              Util.retonarAspas(Util.formataData(EVT_DTREALIZACAO,"dd/MM/yyyy", true), true)  + ", " +
                              Util.retonarAspas(Util.formataData(EVT_DTINSCRICAOINI,"dd/MM/yyyy",true), true) + ", " +
                              Util.retonarAspas(Util.formataData(EVT_DTINSCRICAOFIM, "dd/MM/yyyy",true), true) + ", " +
                              Util.retonarNull(EVT_STEXCLUIDO) + ", " +
                              Util.formataFloat(EVT_VALOR, true) + ", " +
                              Util.retonarNull(SOLICITANTE_ID) + ", " +
                              Util.retonarNull(EVT_VAGASDISP) + ", " +
                              Util.retonarAspas(EVT_OBS, true) +
                 "      )";
            try
            {
                sqlServer._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        public void _atualizar_Evento(
                                                string EVENTO_ID,
                                                string EVENTO_MODALIDADE_ID,
                                                string EVT_DESCRICAO,
                                                string EVT_DTREALIZACAO,
                                                string EVT_DTINSCRICAOINI,
                                                string EVT_DTINSCRICAOFIM,
                                                string EVT_STEXCLUIDO,
                                                string EVT_VALOR,
                                                string SOLICITANTE_ID,
                                                string EVT_OBS
                                                )
        {

            string sql = " UPDATE EVENTO SET " +
                         "      EVENTO_MODALIDADE_ID = " + Util.retonarNull(EVENTO_MODALIDADE_ID) + ", " +
                         "      EVT_DESCRICAO = " + Util.retonarAspas(EVT_DESCRICAO, true) + ", " +
                         "      EVT_DTREALIZACAO = " + Util.retonarAspas(Util.formataData(EVT_DTREALIZACAO, "dd/MM/yyyy", true), true) + ", " +
                         "      EVT_DTINSCRICAOINI = " + Util.retonarAspas(Util.formataData(EVT_DTINSCRICAOINI, "dd/MM/yyyy", true), true) + ", " +
                         "      EVT_DTINSCRICAOFIM = " + Util.retonarAspas(Util.formataData(EVT_DTINSCRICAOFIM, "dd/MM/yyyy", true), true) + ", " +
                         "      EVT_STEXCLUIDO = " + Util.retonarNull(EVT_STEXCLUIDO) + ", " +
                         "      EVT_VALOR = " + Util.formataFloat(EVT_VALOR, true) + ", " +
                         "      SOLICITANTE_ID = " + Util.retonarNull(SOLICITANTE_ID) + ", "+
                         "      EVT_OBS = " + Util.retonarAspas(EVT_OBS, true) +
                         " WHERE EVENTO_ID =  " + EVENTO_ID;
            try
            {
                sqlServer._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }


        public void _atualizar_Evento_Vagasdisp(
                                               string EVENTO_ID,
                                               string EVT_VAGASDISP
                                               )
        {

            string sql = " UPDATE EVENTO SET " +
                         "      EVT_VAGASDISP = " + Util.retonarNull(EVT_VAGASDISP) +
                         " WHERE EVENTO_ID =  " + EVENTO_ID;
            try
            {
                sqlServer._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }


        public void _excluir_Evento(string EVENTO_ID)
        {
            string sql = "DELETE FROM EVENTO WHERE EVENTO_ID = " + EVENTO_ID;
            try
            {
                sqlServer._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        #endregion
    }
}
